﻿using Abp.Application.Services;
using Abp.Application.Services.Dto;
using Abp.Domain.Entities;
using Hicap.AuthorizationServer.CommonDto;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Hicap.AuthorizationServer
{
    public interface IAuthorizationServerAppServiceBase<TEditDto, TListDto, out TEntity> : IApplicationService
        where TEditDto : class, IEntityDto<int?>
        where TListDto : class, IEntityDto
        where TEntity : class, IEntity
    {
        Task<TListDto> GetById(int input);

        Task BatchDelete(List<int> input);

        Task<TListDto> Upsert(CreateOrUpdateInput<TEditDto> input);

        Task<List<TListDto>> BatchUpsert(List<CreateOrUpdateInput<TEditDto>> inputs);

        Task Delete(int input);

        Task<PagedResultDto<TListDto>> PagedDatas(QueryInput queryInput);

        Task Import(IFormFile file);

        Task<FileContentResult> Export(QueryInput queryInput = null);
    }
}